package com.neusoft.cloudstreamfeign.config;

import feign.Logger;
import feign.Request;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.concurrent.TimeUnit;

/**
 * Feign客户端配置类
 * 配置超时、重试、日志等
 */
@Configuration
public class FeignConfig {
    
    /**
     * 配置Feign日志级别
     */
    @Bean
    public Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
    
    /**
     * 配置请求超时
     */
    @Bean
    public Request.Options requestOptions() {
        return new Request.Options(
            5000,  // 连接超时时间 5秒
            TimeUnit.MILLISECONDS,
            10000, // 读取超时时间 10秒
            TimeUnit.MILLISECONDS,
            true   // 跟随重定向
        );
    }
    
    /**
     * 配置重试策略
     */
    @Bean
    public Retryer feignRetryer() {
        // 重试间隔100ms，最大重试间隔1秒，最大重试次数3次
        return new Retryer.Default(100, 1000, 3);
    }
}
